#include <stdio.h>
//函数的声明和定义

//函数的定义
//以下就是对函数的定义
//如果没有对函数进行声明，函数的定义就要写在主函数之前
int Add(int x, int y)
{
    return (x + y);
}

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);
    int sum = Add(x, y);
    printf("%d", sum);
    return 0;
}

//函数的声明
//声明内容：函数的返回类型+函数名+函数参数+分号
//如果将自定义函数写在主函数之后，就要对函数进行声明：
int Add(int x, int y);

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);
    int sum = Add(x, y);
    printf("%d", sum);
    return 0;
}

int Add(int x, int y)
{
    return (x + y);
}


//一般在一个工程中（见该目录下“函数调用test”文件夹），通常将函数放在一个源文件中，将对这个函数的声明放在一个头文件中，这两个文件作为一个单独的功能模块
//如果要使用这个功能，只需要引用该函数的头文件即可调用该函数
//所以在完成一个大型项目时，模块化的思想是很重要的，利于团队协作和后期维护
#include <stdio.h>
#include "add.h" //引用加法函数头文件

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);
    int sum = Add(x, y);
    printf("%d", sum);
    return 0;
}
//实现方式见当前目录下的函数调用test文件夹

//将函数的声明和函数分别单独放在一个头文件和一个源文件中的好处
//1.include "add.h"的本质是将头文件中对函数的声明拷贝过来，实现对函数声明的效果
//2.如果写了一个加法函数功能，你要将这个功能模块卖给别人，就需要将这个功能模块中的.c源文件编译成静态库隐藏起来（静态库后面再学），卖给别人的时候只需要给他一个头文件和一个静态库即可
//别人就只能使用你的功能，而不能知道你的源代码，这就是将函数功能模块化的第二个好处